package com.itheima.mapper;

import com.itheima.pojo.CheckGroup;
import com.itheima.pojo.CheckItem;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 检查组Mapper接口
 * 
 * @author itheima
 * @date 2025-03-22
 */
public interface CheckGroupMapper 
{
    /**
     * 查询检查组
     * 
     * @param id 检查组主键
     * @return 检查组
     */
    public CheckGroup selectCheckGroupById(Integer id);

    /**
     * 查询检查组列表
     * 
     * @param checkGroup 检查组
     * @return 检查组集合
     */
    public List<CheckGroup> selectCheckGroupList(CheckGroup checkGroup);

    /**
     * 新增检查组
     * 
     * @param checkGroup 检查组
     * @return 结果
     */
    public int insertCheckGroup(CheckGroup checkGroup);

    /**
     * 修改检查组
     * 
     * @param checkGroup 检查组
     * @return 结果
     */
    public int updateCheckGroup(CheckGroup checkGroup);

    /**
     * 删除检查组
     * 
     * @param id 检查组主键
     * @return 结果
     */
    public int deleteCheckGroupById(Integer id);

    /**
     * 批量删除检查组
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCheckGroupByIds(Integer[] ids);

    /**
     * 批量删除检查项
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCheckItemByGroupIds(Long[] ids);
    
    /**
     * 批量新增检查项
     * 
     * @param checkItemList 检查项列表
     * @return 结果
     */
    public int batchCheckItem(List<CheckItem> checkItemList);
    

    /**
     * 通过检查组主键删除检查项信息
     * 
     * @param id 检查组ID
     * @return 结果
     */
    public int deleteCheckItemByGroupId(Integer id);

    //通过检查组id查询检查项
    @Select("select * from check_item ci where ci.group_id = #{id}")
    List<CheckItem> selectCheckItemByGroupId(Integer id);

    /**
     * 通过套餐id查询检查组id
     * @param setmealId
     * @return
     */
    @Select("select cg.id from check_group cg,group_setmeal gs,setmeal s where gs.group_id = cg.id and gs.setmeal_id = s.id and s.id = #{setmealId}")
    List<Integer> findCheckGroupIdsBySetmealId(Integer setmealId);

    @Select("select * from check_group")
    List<CheckGroup> selectCheckGroupAll();

}
